package org.balthie.demo.jvm.runtime.falsesharing;

import sun.misc.Contended;

class Counter
{
    // Long 8个字节，        count1，count2处于同一个缓存行
    public volatile long count1 = 0;
    
    public volatile long count2 = 0;
    
}

//在Java 8和9中，Java有@Contemped注释，它可以用空字节填充类中的字段（当存储在RAM中时，在字段之后），这样该类对象中的字段就不会存储在同一个CPU缓存行中。
class Counter1 {

//    @jdk.internal.vm.annotation.Contended("group1")
    public volatile long count1 = 0;

//    @jdk.internal.vm.annotation.Contended("group2")
    public volatile long count2 = 0;

//    @jdk.internal.vm.annotation.Contended("group2");
//    public volatile long count3 = 0;

}